package grafica.admin;

import grafica.manejoImagenes.ImagenPrincipalAdmin;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.table.DefaultTableModel;
import ValueObjects.VOJugador;
import ValueObjects.VOPelicula;
import controller.admin.GuardarController;
import controller.admin.PrincipalAdminController;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.Color;
import java.awt.Toolkit;
import java.io.IOException;
import java.rmi.NotBoundException;


public class VentanaPrincipalAdmin {

	private JFrame frmVentanaAdmin;
	private GuardarController guardar;
	private PrincipalAdminController controller;
	private JPanel panel;
	private JButton btnRegistrarPelicula;
	private JButton btnGuardar;
	private JButton btnSalir;
	private JButton btnRegistrarJugador;
	private JButton btnActualizar;
	private JButton btnListado;
	private JLabel lblBienvenidoSrsraCoupier;
	private DefaultTableModel peliculas;
	private DefaultTableModel jugadores;
	private JTable tablePeliculas;
	private JScrollPane scrollPanePeliculas;
	private JTable tableJugadores;
	private JScrollPane scrollPaneJugadores;
	private VOPelicula[] p;
	private VOJugador[] j;
	private JLabel lblJugadores;		
	private JLabel lblPeliculas;
	private ImagenPrincipalAdmin fondo;
	public VentanaPrincipalAdmin() throws IOException, NotBoundException {
		initialize();
	}

	private void ListarPeliculas(){
		p = controller.listarPeliculas();
		if(p!=null){
	        Object[] pel = new Object[2];
	        for (int x = 0; x < p.length; x++) {
	            
	            pel[0] = (p[x].getTitulo());
	            pel[1] = (p[x].getDescripcion());
	            peliculas.addRow(pel);
	        }
		}
	}
	
	private void ListarJugadores(){
		j = controller.listarJugadores();
		if(j!=null){
	        Object[] jug = new Object[2];
	        for (int x = 0; x < j.length; x++) {
	        	jug[0] = (j[x].getNombre());
	        	jug[1] = (j[x].getCodigo());
	            jugadores.addRow(jug);
	        }
		}
	}
	
	private void initialize() throws IOException, NotBoundException {
				
		frmVentanaAdmin = new JFrame();
		guardar = new GuardarController(this);
		controller = new PrincipalAdminController(this);
		panel = new JPanel();
		btnRegistrarPelicula = new JButton("Registrar Pelicula");
		btnGuardar = new JButton("Guardar");
		btnSalir = new JButton("Salir");
		btnRegistrarJugador = new JButton("Registrar Jugador");
		lblBienvenidoSrsraCoupier = new JLabel("Administraci\u00F3n:");
		fondo = new ImagenPrincipalAdmin();
		lblBienvenidoSrsraCoupier.setForeground(Color.WHITE);
		peliculas = new DefaultTableModel();		
	    tablePeliculas = new JTable(peliculas);
        jugadores = new DefaultTableModel();		
		btnActualizar = new JButton("Actualizar");		
		btnListado = new JButton("Listados");
	  	tableJugadores = new JTable(jugadores);
		lblJugadores = new JLabel("Jugadores:");		
		lblJugadores.setForeground(Color.WHITE);
		lblPeliculas = new JLabel("Peliculas:");		
		lblPeliculas.setForeground(Color.WHITE);
	  	scrollPaneJugadores = new JScrollPane(tableJugadores);
	    scrollPanePeliculas = new JScrollPane(tablePeliculas);

	    peliculas.addColumn("Titulo");
        peliculas.addColumn("Descripcion");
                
        jugadores.addColumn("Nombre");
        jugadores.addColumn("Codigo");

        tablePeliculas.setModel(peliculas);
        tablePeliculas.setSize(100, 100);
        tablePeliculas.setOpaque(false);

	  	tableJugadores.setModel(jugadores);
        tableJugadores.setSize(100, 100);
		tableJugadores.setOpaque(false);

		((JComponent) tablePeliculas.getDefaultRenderer(Object.class)).setOpaque(false);
		((JComponent) tablePeliculas.getDefaultRenderer(Object.class)).setForeground(Color.WHITE);
		((JComponent) tableJugadores.getDefaultRenderer(Object.class)).setOpaque(false);
		((JComponent) tableJugadores.getDefaultRenderer(Object.class)).setForeground(Color.WHITE);
        scrollPanePeliculas.setSize(692, 181);
	    scrollPanePeliculas.setLocation(20, 254);
	    scrollPanePeliculas.setOpaque(false);

	    scrollPanePeliculas.getViewport().setOpaque(false);
	    scrollPaneJugadores.setSize(692, 181);
	  	scrollPaneJugadores.setLocation(20, 33);
		scrollPaneJugadores.setOpaque(false);
		scrollPaneJugadores.getViewport().setOpaque(false);

	  	panel.add(scrollPanePeliculas, BorderLayout.CENTER);  	    
	    panel.add(scrollPaneJugadores, BorderLayout.CENTER);
	                  
	    
	    
		frmVentanaAdmin.getContentPane().add(fondo);
		fondo.add(panel);
		fondo.setLayout(null);

		panel.add(btnGuardar);
		panel.add(btnSalir);
		panel.add(btnRegistrarPelicula);
		panel.add(btnRegistrarJugador);
		panel.add(lblBienvenidoSrsraCoupier);
		
		frmVentanaAdmin.setIconImage(Toolkit.getDefaultToolkit().getImage("Imagenes\\icono.png"));
		frmVentanaAdmin.setResizable(false);
		frmVentanaAdmin.setAutoRequestFocus(false);
		frmVentanaAdmin.setTitle("Adivine la pelicula A3");
		frmVentanaAdmin.setSize(902, 475);
		frmVentanaAdmin.setLocationRelativeTo(null);
		frmVentanaAdmin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		

		panel.setAutoscrolls(true);
		panel.setRequestFocusEnabled(false);
		panel.setOpaque(false);
		panel.setSize(955, 475);
		panel.setLayout(null);

		
		btnRegistrarPelicula.setToolTipText("Registrar una pelicula");
		btnRegistrarPelicula.setFocusPainted(false);
		btnRegistrarPelicula.setHorizontalTextPosition(SwingConstants.CENTER);
		btnRegistrarPelicula.setOpaque(false);
		btnRegistrarPelicula.setSelected(true);
		btnRegistrarPelicula.setIcon(new ImageIcon("Imagenes\\registros.jpg"));
		btnRegistrarPelicula.setForeground(Color.WHITE);
		btnRegistrarPelicula.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		btnRegistrarPelicula.setBounds(730, 127, 152, 33);
		
		btnRegistrarJugador.setFocusPainted(false);
		btnRegistrarJugador.setHorizontalTextPosition(SwingConstants.CENTER);
		btnRegistrarJugador.setOpaque(false);
		btnRegistrarJugador.setSelected(true);
		btnRegistrarJugador.setIcon(new ImageIcon("Imagenes\\registros.jpg"));
		btnRegistrarJugador.setForeground(Color.WHITE);
		btnRegistrarJugador.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		btnRegistrarJugador.setBounds(730, 72, 152, 33);
		
		lblBienvenidoSrsraCoupier.setHorizontalAlignment(SwingConstants.CENTER);
		lblBienvenidoSrsraCoupier.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		lblBienvenidoSrsraCoupier.setBounds(733, 33, 167, 24);
		
		btnSalir.setFocusPainted(false);
		btnSalir.setOpaque(false);
		btnSalir.setSelected(true);
		btnSalir.setForeground(Color.WHITE);
		btnSalir.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		btnSalir.setHorizontalTextPosition(SwingConstants.CENTER);
		btnSalir.setBounds(740, 402, 132, 33);
		btnSalir.setIcon(new ImageIcon("Imagenes\\salir.jpg"));
		
		btnGuardar.setFocusPainted(false);
		btnGuardar.setHorizontalTextPosition(SwingConstants.CENTER);
		btnGuardar.setOpaque(false);
		btnGuardar.setSelected(true);
		btnGuardar.setForeground(Color.WHITE);
		btnGuardar.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		btnGuardar.setIcon(new ImageIcon("Imagenes\\guardar.jpg"));
		btnGuardar.setBounds(740, 344, 132, 33);
		
		btnActualizar.setToolTipText("Actualizar");
		btnActualizar.setSelected(true);
		btnActualizar.setOpaque(false);
		btnActualizar.setHorizontalTextPosition(SwingConstants.CENTER);
		btnActualizar.setForeground(Color.WHITE);
		btnActualizar.setIcon(new ImageIcon("Imagenes\\actualizar.jpg"));
		btnActualizar.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		btnActualizar.setFocusPainted(false);
		btnActualizar.setBounds(740, 300, 132, 33);
		panel.add(btnActualizar);
		
		btnListado.setToolTipText("Listados");
		btnListado.setSelected(true);
		btnListado.setOpaque(false);
		btnListado.setHorizontalTextPosition(SwingConstants.CENTER);
		btnListado.setForeground(Color.WHITE);
		btnListado.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		btnListado.setFocusPainted(false);
		btnListado.setIcon(new ImageIcon("Imagenes\\listado.jpg"));
		btnListado.setBounds(740, 218, 132, 33);
		panel.add(btnListado);
		
		lblJugadores.setHorizontalAlignment(SwingConstants.CENTER);
		lblJugadores.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		lblJugadores.setBounds(20, 11, 700, 17);
		panel.add(lblJugadores);
		lblPeliculas.setHorizontalAlignment(SwingConstants.CENTER);
		lblPeliculas.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		lblPeliculas.setBounds(20, 226, 700, 17);
		panel.add(lblPeliculas);
				
		btnSalir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				frmVentanaAdmin.setVisible(false);
			}
		});
		btnListado.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				VentanaListadoJugador Listado = new VentanaListadoJugador();
				Listado.setVisible(true);
			}
		});
		
		btnRegistrarPelicula.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				VentanaRegistrarPelicula v = new VentanaRegistrarPelicula();
				v.setVisible(true);
			}
		});
		btnActualizar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				limpiarPeliculas();
				limpiarJugadores();
				ListarPeliculas();
				ListarJugadores();
			
			}
		});
		
		btnRegistrarJugador.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
				VentanaRegistrarJugador v = new VentanaRegistrarJugador();
				v.setVisible(true);
			}
		});

		btnGuardar.addActionListener(new java.awt.event.ActionListener() {
			
			public void actionPerformed(java.awt.event.ActionEvent e) {
				guardar.guardar(); 
			}	
		});
			
		ListarPeliculas();
		ListarJugadores();
	}
	
	
	public void setVisible(boolean b) {
		this.frmVentanaAdmin.setVisible(b);
	}
	
	void limpiarPeliculas(){
        while (peliculas.getRowCount()!=0){
                ((DefaultTableModel)peliculas).removeRow(0);
        }
	}
	
	void limpiarJugadores(){
        while (jugadores.getRowCount()!=0){
                ((DefaultTableModel)jugadores).removeRow(0);
        }
	}
	public void mostrarMensaje(String msj){
		JOptionPane.showMessageDialog(null,msj);
		
	}
}
